Modern storage interfaces and protocols are capable of performing large numbers of input/output (“I/O”) operations per second (“TOPS”), particularly when used with non-volatile memory devices such as solid-state drives (“SSDs”). In many implementations, however, these interfaces and protocols are utilized by legacy storage stacks that were originally designed for use with much slower interfaces, protocols, and disk-based mass storage devices.
Although legacy storage stacks can interoperate with more modern storage interfaces and protocols, this combination commonly comes at the cost of central processing unit (“CPU”) overhead. In particular, full realization of the capabilities of modern storage interfaces and protocols requires a large number of CPU cycles per I/O operation.
Legacy storage stacks also typically provide programmer-friendly file-based interfaces for accessing underlying storage devices. But, this also comes at the cost of sometimes significant CPU utilization. It is possible for user mode applications to obtain near-raw access to available storage devices for low CPU utilization and high IOPS. This can, however, complicate applications significantly since they no longer have access to a file system and must access storage devices at a block level.
It is with respect to these and other technical challenges that the disclosure made herein is presented.